(function($) {	
	/**
	 * 为table绑定快捷菜单。
	 */
	$.fn.tableContextMenu = function(cfg) {	    
	    var _this = this,
	        menuID = cfg['menuID'];
		
		$(_this).contextMenu(
		    {
    			menu: menuID,	    			
    			//快捷菜单的上下文，用于快捷菜单的定位等。		
    			menuContext : cfg['menuContext'],    						
    			/**
    			 * @return {Boolean} true-show/false-hide.
    			 */
    			onBeforeShow : function(targetElement){	
    			    
    			    //右键点击thead与tfoot时，不显示菜单。
    			    if( !$(targetElement).closest('thead').isEmpty() || !$(targetElement).closest('tfoot').isEmpty() ){
    			        return false;
    			    }
    			    
    			    //权限过滤。
    			    if( cfg['permHandler'] ){
                        if(!cfg['permHandler'](targetElement, _this, $('#' + menuID))){
                            return false;
                        }
                    }
    			    		   
        		    //禁用行处理。 
    				var $tr = $(targetElement).closest('tr');
    				if(!$tr.hasClass('disabled')){					
    					return true;
    				}
    			}
    		}, 
		    $.proxy( cfg['clickHandler'], _this )
	    );		
	};	
	/**
	 * 过滤菜单项.
     * @param {Boolean|Array} visibleMenuIDs
     * true : 显示全部菜单项.
     * false|[] : 隐藏菜单.
     * [menuID1, menuID2, ...] : 显示指定的菜单项.
	 */
	$.fn.tableContextMenuFilter = function(visibleMenuIDs) {
	    var $menu = this;
	    if(visibleMenuIDs === true){
	        $('>li', $menu).show();
	       return true;    
	    } else {
        	if (Type.isArray(visibleMenuIDs) && visibleMenuIDs.length) {
                $('>li', $menu).hide();            
                $(visibleMenuIDs).each(function() {
                    $('>li.{0}'.format(this), $menu).show();
                });
                return true;
            } else {
                return false;
            }    
        }
	};	   
})(jQuery);